package com.mybatis.sp.mybatisexamle_xml.datasourcecong;

//创建动态数据源上下文

/**
 * @Description 动态数据源上下文管理： 设置数据源，获取数据源，清除数据源
 */
public class DynamicDataSourceContextHolder {
    //存储线程和数据源类型
    private static final ThreadLocal<DatasourceType>  DATASOURCE_CONTEXT_KEY_HOLDER = new ThreadLocal<>();

    // 设置当前线程数据源
    public static void setContextKey(DatasourceType type) {
        DATASOURCE_CONTEXT_KEY_HOLDER.set(type);
    }

    // 获取当前线程数据源key, 没有设置则使用主数据源
    public static DatasourceType getContextKey() {
        DatasourceType type = DATASOURCE_CONTEXT_KEY_HOLDER.get();
        return type == null ? DatasourceType.master : type;
    }

    // 删除当前线程数据源
    public static void removeContextKey() {
        DATASOURCE_CONTEXT_KEY_HOLDER.remove();
    }
}
